Skip to content

Update to TG 2.5.0-develop.55 (do not merge) - #4

Open
tig wants to merge 4 commits into
mainfrom
tig/update-to-2.5
Open

Update to TG 2.5.0-develop.55 (do not merge)#4
tig wants to merge 4 commits into
mainfrom
tig/update-to-2.5

Conversation

@tig

@tig tig commented Aug 22, 2026

Copy link
Copy Markdown
Member

⚠️ DO NOT MERGE with the pre-release pin in place

This PR pins public Terminal.Gui 2.5.0-develop.55 from nuget.org so the examples can be validated ahead of the v2.5.0 tag. Before merging, once stable 2.5.x is on nuget.org:

  1. Update the Terminal.Gui pin in Directory.Packages.props to the public stable 2.5.x version
  2. Re-run restore, build, and the smoke tests; confirm Terminal.Gui restores from nuget.org
  3. Then merge

Do not leave a floating 2.5.0-develop.* pin. Restore already works from nuget.org.


Summary

Retargets this PR from a floating unpublished 2.5.0-develop.* pin to public 2.5.0-develop.55 as part of tui-cs/Terminal.Gui#5630 Workstream 4.

Kept from the original 2.5 port:

  • ConfigurationManager.Enable removed; auto-load at assembly load
  • Example theme override via TuiConfigurationBuilder.Shared.RuntimeConfig
  • ReactiveExample TextField.TextChanged via Observable.FromEventPattern (source generator cannot wrap 2.5 TextField)
  • Nested MEC config JSON for Config/Themes
  • FSharpExample ported to v2 and added to the solution

Validation

CI on this head: Ubuntu/macOS/Windows build-and-test green.

Refs: tui-cs/Terminal.Gui#5416, tui-cs/Terminal.Gui#5630.

tig and others added 3 commits August 22, 2026 17:29
…416).

Ports every example off the legacy ConfigurationManager API removed by
tui-cs/Terminal.Gui#5416 and onto the 2.5 MEC-based model:

- Remove ConfigurationManager.Enable (ConfigLocations.All) everywhere —
  configuration is applied automatically at assembly load in 2.5.
- Example: RuntimeConfig theme override now uses
  TuiConfigurationBuilder.Shared.RuntimeConfig + ApplyToStaticFacades.
- ReactiveExample: the ObservableEvents source generator cannot wrap 2.5's
  TextField (it hides View.TextChanging with a different delegate type);
  subscribe to TextField.TextChanged via Observable.FromEventPattern instead.
- Migrate Config/*.json and Themes/code-dark.config.json to the nested MEC
  shape (dotted keys and Themes/Schemes arrays no longer apply). Key bindings
  stay supported via nested Application:DefaultKeyBindings,
  View:DefaultKeyBindings, and View:ViewKeyBindings with per-command overlay.
- Drop the removed ConfigurationManager.ThrowOnJsonErrors key and fix a
  mojibake check-mark glyph in example_config.json.
- Port FSharpExample to the v2 API (v2 namespaces, IApplication model,
  F# 9 nullness) and add it to the solution.
- Rewrite the CommunityToolkit/Reactive/SelfContained/Config READMEs
  (updated snippets; the old files had no line endings and mojibake).
- Bump Terminal.Gui to 2.5.0-develop.* (floats once 2.5 dev packages
  publish after tui-cs/Terminal.Gui#5416 merges).

Verified against a locally packed 2.5.0-develop.1 from the #5416 branch:
solution + FSharpExample build with 0 warnings/0 errors, and all 9 smoke
tests pass. dotnet format verify reports only the 46 violations already
present on main under SDK 10.0.400.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NGq38GbuZPAEa5wZHkmPiZ
…ys, F# smoke test.

- Config/macos.json and windows.json: trim to only the commands they actually
  change (2.5's per-command overlay keeps defaults for omitted commands);
  drop windows.json's Quit row (it restated the compile-time default).
- Config/README.md: correct the default-binding tables against the 2.5 source
  (Quit is Esc on all platforms; DeleteCharRight includes Ctrl+D by default),
  and document that a binding cannot be removed via config — windows.json
  cannot disable Suspend; use Application.RemoveDefaultKeyBinding in code.
- Examples.sln: revert the auto-generated x64/x86 platform churn (~120 lines);
  add FSharpExample and the previously missing Examples.SmokeTests rows as
  plain Any CPU entries, so solution builds stop silently skipping the tests.
- SelfContained/README.md: snippet now matches the code (Accepted event, and
  the AppModel.Inline line the example exists to demonstrate).
- ReactiveExample/README.md: scope the .Events () caveat correctly (works for
  other views, never for TextField) and show the IValue ValueChanged binding.
- ReactiveExample/LoginView.cs: replace the two duplicated FromEventPattern
  pipelines with one ObserveText helper over IValue<string>.ValueChanged.
- FSharpExample: add a --smoke-test mode and cover it in Examples.SmokeTests
  (now 10 tests, all passing); fix a space-before-parens miss.

The 2.5.0-develop.* floating version is intentionally left as the merge gate
until Terminal.Gui#5416 publishes packages.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NGq38GbuZPAEa5wZHkmPiZ
Replace the floating 2.5.0-develop.* placeholder with the published
nuget.org package so restore no longer depends on an unpublished 5416 feed.

Co-authored-by: Tig <tig@users.noreply.github.com>
@cursor cursor Bot changed the title Update all examples to Terminal.Gui 2.5.x (MEC configuration, post-#5416) Update to TG 2.5.0-develop.55 (do not merge) Sep 3, 2026
@cursor

cursor Bot commented Sep 3, 2026

Copy link
Copy Markdown

DO NOT MERGE: this PR still pins the public nuget.org pre-release 2.5.0-develop.55. After the stable 2.5.x tag lands, do this:

  1. Set the Terminal.Gui PackageVersion in Directory.Packages.props to the public stable 2.5.x version and drop the TEMP comment.
  2. Re-run dotnet restore and confirm every example resolves Terminal.Gui from nuget.org with no 2.5.0-develop.* pin left.
  3. Re-run dotnet build Examples.sln and the smoke tests.
  4. Then merge.

I retargeted the pin from floating 2.5.0-develop.* to public nuget.org 2.5.0-develop.55. I could not rewrite the PR description itself (the update tool will not overwrite a non-agent-managed body). Please treat this comment as the merge gate until the description can be replaced.

CI runs jb cleanupcode and diffs the tree. ObserveText is now a block
body and sits after the IViewFor.ViewModel explicit implementation.

Co-authored-by: Tig <tig@users.noreply.github.com>
@cursor

cursor Bot commented Sep 3, 2026

Copy link
Copy Markdown

DO NOT MERGE: this PR still pins the public nuget.org pre-release 2.5.0-develop.55. After the stable 2.5.x tag lands, do this:

  1. Set the Terminal.Gui PackageVersion in Directory.Packages.props to the public stable 2.5.x version and drop the TEMP comment.
  2. Re-run dotnet restore and confirm every example resolves Terminal.Gui from nuget.org with no 2.5.0-develop.* pin left.
  3. Re-run dotnet build Examples.sln and the smoke tests.
  4. Then merge.

Local verification on 937ec52:

  1. Restore is from https://api.nuget.org/v3/index.json only. Every example that references Terminal.Gui resolves 2.5.0-develop.55.
  2. dotnet build Examples.sln is 0 warnings, 0 errors.
  3. dotnet jb cleanupcode is idempotent (no diff).
  4. Smoke tests are 10 passed, 0 failed.

There is no local_packages/ directory and no extra NuGet source. I could not rewrite the PR description itself because the update tool will not overwrite a non-agent-managed body. Please treat this comment as the merge gate until the description can be replaced.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants